/**
 * 
 */
package com.taobao.wolfwolf.hibernate.dao;

import java.util.List;

import com.taobao.wolfwolf.hibernate.pojo.Product;
import com.taobao.wolfwolf.util.HqlParam;

/**
 * @author Tux
 *
 * 创建时间: 2011-5-20 上午09:45:13
 * 修改时间: 2011-6-7   上午09:40:49
 */
public interface ProductDao extends BaseDao  {
	/**
	 * 按id来查找
	 * @param id
	 * 			要查找的id
	 * @return
	 * 			查找到的列表
	 * @throws Exception
	 */
	public Product findById(int id) throws Exception;
	
	/**
	 * 是否开户lazy
	 * @param lazy
	 * 按id来查找
	 * @param id
	 * 			要查找的id
	 * @return
	 * 			查找到的列表
	 * @throws Exception
	 */
	public Product findById(boolean lazy, int id) throws Exception;
	
	/**
	 * 按 num_iid 来查找
	 * @param num_iid
	 * @return
	 * @throws Exception
	 */
	public Product findByNumIId(long num_iid) throws Exception;
	
	/**
	 * 按名称来查找
	 * @param name
	 * @return
	 */
	public List<Product> findByName(String name) throws Exception;
	
	/**
	 * 按拼音首字母缩写查找
	 * @param abbr
	 * 			要查找的拼音字母
	 * @return
	 * 			查找到的列表
	 * @throws Exception
	 */
	public List<Product> findByPinyin(String abbr) throws Exception;
	
	/**
	 * 查找全部
	 * @return
	 */
	public List<Product> findAll() throws Exception;
	
	public List<Product> findAll(List<HqlParam> param) throws Exception;
	
	
	/**
	 * 删除全部数据
	 * @throws Exception
	 */
	public void removeAll() throws Exception;
	
	/**
	 * 分页查找
	 * @return
	 */
	public List<Product> paging(int page, int limit) throws Exception;
	
	/**
	 * 按属性分页查找
	 * @param page
	 * 		当前页
	 * @param limit
	 * 		每页容量
	 * @param param
	 * 		自定义的要查询的属性
	 * @return
	 * 		查找到的列表
	 * @throws Exception
	 */
	public List<Product> paging(int page, int limit, List<HqlParam> param) throws Exception;
	
	/**
	 * 获取全部商品的数量
	 * @return
	 */
	public long getTotal() throws Exception;
	
	public long getTotal(List<HqlParam> param) throws Exception;
	
	public Integer getMaxId() throws Exception;
}
